/**
 * @param {string} s
 * @return {string}
 */
// 暴力解法
// var longestPalindrome = function (s) {
//   let s1 = '';
//   const l = s.length
//   for(var i = 0; l > i;i++) {
//     if (s1.length > l - i) {
//       break;
//     }
//     let u = '';
//     for (let t = i;l > t;t++) {
//       u = s[t] + u
//       if (u === s.slice(i, t + 1) && u.length > s1.length) {
//         s1 = u
//       }
//     }
//   }
//   return s1
// };

// 中心扩展
var longestPalindrome = function (s) {
  let maxStr = '' // 当前最大的回文串
  for (let i = 0;i < s.length;i++) {
    let str = s[i] // 当前遍历的这个字符为中心的回文串
    let l = i - 1 // 左侧遍历开始索引
    while (s[i + 1] === s[i]) { // 找到当前字符后连接的所有一样的字符,更新 i 的指针和 str,获取连续的字符
      str += s[i]
      i++
    }
    let r = i + 1 // 右侧遍历开始索引
    while (s[l] === s[r] && s[l] !== undefined) { // 从连续字符两端开始像两侧扩展,直到越界或者不一致,一致的直接拼到 str 中
      str = s[l] + str + s[l]
      l--
      r++
    }
    if (str.length > maxStr.length) { // 判断与之前最大的对比
      maxStr = str
    }
  }
  return maxStr
};

s = "a"

console.log(longestPalindrome(s));